برچسب: نویسنده: دانلودی تاريخ: يکشنبه 30 بهمن 1401 ساعت: 1:08
به ASP.NET Core 7، یک میانافزار جدید به نام Rate limiter اضافه شدهاست که امکان محدود سازی دسترسی به منابع برنامهی ما را میسر میکند. این میانافزار، طراحی جامع و مفصلی را دارد. به همین جهت نیاز است در ابتدا با مفاهیم مرتبط با آن آشنا شد و سپس به سراغ پیاده سازی و استفادهی از آن رفت.
چرا باید میزان دسترسی به منابع یک برنامهی وب را محدود کرد؟
فرض کنید در حال ساخت یک web API هستید که کارش ذخیره سازی لیست وظایف اشخاص است و برای مثال از یک GET /api/todos برای دریافت لیست ظایف، یک POST /api/todos برای ثبت و یک PUT /api/todos/{id} برای تغییر موارد ثبت شده، تشکیل میشود.
سؤال: چه مشکلی ممکن است به همراه این سه endpoint بروز کند؟
پاسخ: به حداقل چهار مورد زیر میتوان اشاره کرد:
- یک مهاجم سعی میکند با برنامهای که تدارک دیده، هزاران وظیفهی جدید را در چند ثانیه به سمت برنامه ارسال کند تا سبب خاتمهی سرویس آن شود.
- برنامهی ما در حین سرویس دهی، به یک سرویس ثالث نیز وابستهاست و آن سرویس ثالث، اجازهی استفادهی بیش از اندازهی از منابع خود را نمیدهد. با رسیدن تعداد زیادی درخواست به برنامهی ما تنها از طرف یک کاربر، به سقف مجاز استفادهی از آن سرویس ثالث رسیدهایم و اکنون برنامه، برای تمام کاربران آن قابل استفاده نیست.
- شخصی در حال دریافت اطلاعات تک تک کاربران است. از شماره یک شروع کرده و به همین نحو جلو میرود. برای دریافت اطلاعات کاربران، نیاز است شخص به سیستم وارد شده و اعتبارسنجی شود؛ یعنی به ازای هر درخواست، یک کوئری نیز به سمت بانک اطلاعاتی جهت بررسی وضعیت فعلی و آنی کاربر ارسال میشود. به همین جهت عدم کنترل میزان دسترسی به لیست اطلاعات کاربران، بار سنگین
برچسب: نویسنده: دانلودی تاريخ: يکشنبه 30 بهمن 1401 ساعت: 1:08
برچسب: نویسنده: دانلودی تاريخ: يکشنبه 30 بهمن 1401 ساعت: 1:08
برچسب: نویسنده: دانلودی تاريخ: چهارشنبه 26 بهمن 1401 ساعت: 14:15
برچسب: نویسنده: دانلودی تاريخ: چهارشنبه 26 بهمن 1401 ساعت: 14:15
برچسب: نویسنده: دانلودی تاريخ: چهارشنبه 26 بهمن 1401 ساعت: 14:15
1094 بازدید
دسته بندی: IELTS Assessed Samples - Writing منتشر شده در 2 بهمن 1401 زمان مطالعه: 2 دقیقه 0 نظر
به روز شده در 2 بهمن 1401
نمونه تصحیح شده رایتینگ آیلتس تسک یک آکادمیک'>آکادمیک توسط آکادمی اکسیر – شماره 29 – نمره 7
داوطلب گرامی، زبان آموز اکسیری عزیز سلام،در زیر یک نمونه رایتینگ تصحیح شده به همراه جزئیات برای شما گذاشته شده است. حتما به نمره تک تک معیارها مثل LR و GRA دقت کنید.اگر نمیدانید بر چه اساسی رایتینگ آیلتس تصحیح میشود، می توانید لینک زیر را ببینید.
نمونه رایتینگ نوشته شده توسط متقاضیان اکسیر آیلتس
جدول نمرات این نمونه تصحیح شده رایتینگ آیلتس توسط آکادمی اکسیر
توضیحات شفاهی و تحلیل کامل نمونه تصحیح شده رایتینگ آیلتس توسط آکادمی اکسیر
https://dl.exiracademy.org/WebsiteMaterial/Writing%20Sample%20Audio%20Files/WT1AC/%D8%B1%D8%A7%DB%8C%D8%AA%DB%8C%D9%86%DA%AF%2B%D8%AA%D8%B3%DA%A9%2B%DB%B1%2B%D8%A2%DA%A9%2B%D8%A7%DA%A9%D8%B3%DB%8C%D8%B1%2B%D8%A2%DB%8C%D9%84%D8%AA%D8%B3%2B%D8%AF%2B%D8%A7%2B%DB%B8.ogg
لینک های مفید:
نمونه های تصحیح شده رایتینگ آیلتس
نمونه های تصحیح شده اسپیکینگ آیلتس
آموزش رایگان آیلتس – Lea IELTS for Free
پنالتی های رایتینگ آیلتس
شرکت در ماک آیلتس اکسیر
شرکت در کلاس های گروهی اکسیر آیلتس
شرکت در دوره آفلاین اکسیر آیلتس
تهیه پکیج جامع اکسیر آیلتس
شرکت در تعیین سطح زبان عمومی
درخواست مشاوره آیلتس
ایده های رایتینگ و اسپیکینگ آیلتس
بهترین منابع خودآموزی
برچسب: نویسنده: دانلودی تاريخ: چهارشنبه 26 بهمن 1401 ساعت: 14:15
980 بازدید
دسته بندی: IELTS Assessed Samples - Writing منتشر شده در 10 بهمن 1401 زمان مطالعه: 1 دقیقه 0 نظر
به روز شده در 10 بهمن 1401
نمونه تصحیح شده رایتینگ آیلتس تسک دو توسط آکادمی اکسیر – شماره 28 – نمره 4.5
داوطلب گرامی، زبان آموز اکسیری عزیز سلام،در زیر یک نمونه رایتینگ تصحیح شده به همراه جزئیات برای شما گذاشته شده است. حتما به نمره تک تک معیارها مثل LR و GRA دقت کنید.اگر نمیدانید بر چه اساسی رایتینگ آیلتس تصحیح میشود، می توانید لینک زیر را ببینید.
نمونه رایتینگ نوشته شده توسط متقاضیان اکسیر آیلتس
جدول نمرات این نمونه تصحیح شده رایتینگ آیلتس توسط آکادمی اکسیر
توضیحات شفاهی و تحلیل کامل نمونه تصحیح شده رایتینگ آیلتس توسط آکادمی اکسیر
https://dl.exiracademy.org/WebsiteMaterial/Writing%20Sample%20Audio%20Files/WT2/%D8%B1%D8%A7%DB%8C%D8%AA%DB%8C%D9%86%DA%AF%2B%D8%AA%D8%B3%DA%A9%2B%DB%B2%2B%D8%A7%DA%A9%D8%B3%DB%8C%D8%B1%2B%D8%A2%DB%8C%D9%84%D8%AA%D8%B3%2B%D8%AD%2B%D8%AB%20%281%29.ogg
لینک های مفید:
نمونه های تصحیح شده رایتینگ آیلتس
نمونه های تصحیح شده اسپیکینگ آیلتس
آموزش رایگان آیلتس – Lea IELTS for Free
پنالتی های رایتینگ آیلتس
شرکت در ماک آیلتس اکسیر
شرکت در کلاس های گروهی اکسیر آیلتس
شرکت در دوره آفلاین اکسیر آیلتس
تهیه پکیج جامع اکسیر آیلتس
شرکت در تعیین سطح زبان عمومی
درخواست مشاوره آیلتس
تماس با اکسیر
4.7/5 - (4
برچسب: نویسنده: دانلودی تاريخ: چهارشنبه 26 بهمن 1401 ساعت: 14:15
متاورس دنیایی دیجیتالی با قابلیت های فراوان برای سود سازی و ایجاد درآمد می باشد این دنیای متاورسی به وجود آمده که مارا از قید و بند دنیای فیزیکی ازاد کرده و به بی نهایت قابلیت و ویژگی مهم متصل کند اما آنچه امروزه از متاورس وجود دارد و برای ما نیز بسیار جذاب است پروژه های متنوع این دنیا با امکان کسب درآمد های دلاری بسیار بدون سرمایه اولیه است با ما همراه باشید با اشنایی کامل با قابلیت های بسیار این دنیا برای داشتن یک درآمد دلاری رایگان!
در ادامه مقاله به آموزش مهمترین مفاهیم متاورس میپردازیم و بهترین آموزشگاه برای آموزش متاورس و کسب درآمد دلاری از متاورس را به شما پیشنهاد میدهیم، همراه ما باشید.
متاورس چیست؟
دنیای متاورس به لطف فناوری بلاک چین است که روزبهروز درحالتوسعه است و قطعاً آینده متعلق به متاورس خواهد حال اگر شما هم میخواهید سهمی از این آینده داشته باشید، امروز باید دستبهکار شوید و درباره متاورس اطلاعات جامع و صحیحی کسب کنید.
متاورس (Metaverse) از دو کلمه Meta به معنای برتر- فرا و Verse به معنای جهان است بنابراین میتوان آن را فراجهان نامید. نامی که بسیار برازنده آن است. واژه متاورس اولین بار سالها قبل توسط نیل استفنسون در رمان سقوط برفی استفاده شد و توسط بازیهای مختلف و فیلمهای سینمایی به دنیا معرفی شد؛ اما از آنجایی که بستر مناسبی برای پیشرفت آن وجود نداشت، رشد و توسعه آن تا همین چند سال گذشته به تأخیر افتاد.
متاورس یک دنیای سهبعدی است که برای متصل شدن به آن احتیاج به اینترنت داریم تنها همین! اما اینکه در کدام بخشهای متاورس سرمایهگذاری کنیم. برای کسب اطلاعات جامع راجع به «چیستی متاورس» و «تاریخچه متاورس» عبارت “همه چیز در مورد کسب
برچسب: نویسنده: دانلودی تاريخ: چهارشنبه 26 بهمن 1401 ساعت: 14:15
برچسب: نویسنده: دانلودی تاريخ: جمعه 21 بهمن 1401 ساعت: 8:03
برچسب: نویسنده: دانلودی تاريخ: جمعه 21 بهمن 1401 ساعت: 8:03
امروزه با توجه به توسعه برندهای تولیدکننده گوشیهای هوشمند در جهان، در این بازار تنوع بسیار زیادی وجود دارد و گاهی اوقات، این تنوع میتواند انتخابهای ما را سخت کند. اگر به دنبال یک گوشی موبایل هوشمند با امکانات فوق العاده میگردید، گوشیهای سامسونگ s23 اولترا و آیفون 14 پرومکس میتوانند انتخاب مناسبی برای شما باشند. برای خرید یک گوشی هوشمند مناسب، ابتدا باید شرایط و نیازهای خود را در نظر بگیرید و سپس به مقایسه گوشیهای هوشمند موجود در بازار بپردازید. در این مقاله از شرکت نرم افزاری وب نگاه، به بررسی و مقایسه دو گوشی سامسونگ گلکسی s23 ultra و آیفون 14 پرومکس خواهیم پرداخت. در ادامه با همراه باشید.
مقایسه سیستم عامل گوشی آیفون 14 پرومکس با سامسونگ s23 اولترا
دو گوشی آیفون 14 پرومکس و سامسونگ گلکسی s23 ultra، دارای دو سیستم عامل متفاوت هستند. گوشی آیفون 14 پرومکس از سیستم عامل IOS 16 برخوردار است و گوشی سامسونگ S23 ultra از سیستم عامل اندروید 13 بهره میبرد. اگر شما تا به الان از سیستم عامل اندروید استفاده کرده باشید، ممکن است کار با آیفون 14 پرومکس برای شما کمی سخت باشد و سامسونگ گلکسی s23 ultra را ترجیح دهید.
لازم به ذکر است که سیستم عاملهای این دو گوشی، تا 5 سال بهروز میمانند و شما به هیچ وجه نیاز ندارید تا نگران قدیمی شدن سیستم عامل گوشی خود باشید.
مقایسه دوربین گوشی آیفون 14 پرومکس با سامسونگ s23 ultra
میتوان گفت یکی از مهمترین فاکتورها برای انتخاب یک گوشی هوشمند، دوربین آن است. دوربین اصلی گوشی سامسونگ گلکسی s23 ultra از سنسور 200 مگاپیکسلی برخوردار است که وضوح و کیفیت بسیار بالایی دارد. دوربین اصلی آیفون 14 پرومکس نیز دارای سنسور 48 مگاپیکسلی است و
برچسب: نویسنده: دانلودی تاريخ: جمعه 21 بهمن 1401 ساعت: 8:03
توسط ماژولها میتوانیم یک مجموعه از دستورات را گروهبندی کنیم و تحت عنوان یک پکیج ارائه دهیم که برای دیگران نیز قابل استفاده باشند. برای ایجاد یک ماژول کافی است اسکریپتهای خود را درون یک فایل با پسوند psm1 قرار دهیم؛ به این فایل اصطلاحاً root module گفته میشود. در واقع میتوان گفت ماژولها یک روش مناسب برای به اشتراکگذاری اسکریپتها میباشند. تا اینجا با کمک پروفایلها توانستیم امکان استفاده مجدد از توابع و اسکریپتها را داشته باشیم؛ ماژولها نیز یک روش دیگر برای بارگذاری اسکریپتها درون شل هستند. زمانیکه شل را باز میکنیم PowerShell به صورت خودکار یکسری مسیر را برای بارگذاری ماژولها اسکن میکند. توسط متغیر env:PSModulePath$ میتوانیم لیست این مسیرها را ببینیم: PS /> $env:PSModulePath -Split ":"
/Users/sirwanafifi/.local/share/powershell/Modules
/usr/local/share/powershell/Modules
/usr/local/microsoft/powershell/7/Modules
همانطور که عنوان شد برای ایجاد یک ماژول کافی است اسکریپتهای خود را داخل یک فایل با پسوند psm1 ذخیره کنیم. به عنوان مثال میتوانیم تابع Get-PingReply را درون یک فایل با نام PingModule.psm1 ذخیره و سپس توسط دستور Import-Module ماژول را ایمپورت کنیم: PS /> Import-Module ./PingModule.psm1
سپس توسط دستور Get-Module PingModule میتوانیم جزئیات ماژول ایمپورت شده را مشاهده نمائیم: PS /> Get-Module PingModule
ModuleType Version PreRelease Name ExportedComma
برچسب: نویسنده: دانلودی تاريخ: جمعه 21 بهمن 1401 ساعت: 8:03
شاید این جمله را شنیده باشید: “جهان امروز، جهان اطلاعات است.” همانطور که این جمله به ما میگوید، امروزه در جهانی زندگی میکنیم که سرشار از اطلاعات و داده است و هر روز به مقدار آنها افزوده میشود. با مقدار زیاد اطلاعات و دادهای که در جهان امروز وجود دارد، گرایش کسب و کارها و بیزینسها به سمت استفاده از پایگاههای داده رفته است. کسب و کارها اغلب برای مدیریت بهینهی سیل عظیم دادههایشان، از پایگاه داده استفاده میکنند. مونگو دیبی (mongo DB) نیز یک پایگاه داده nosql است. در این مقاله از شرکت نرم افزاری وب نگاه به بررسی مفهوم پایگاه داده، پایگاه داده مونگو دیبی و کاربردهای آن میپردازیم. در ادامه با ما همراه باشید. پایگاه داده چیست؟
قبل از اینکه به سراغ بررسی مونگو دیبی برویم، شما نیازمندید تا با مفهوم پایگاه داده، آشنایی کامل داشته باشید. اگر بخواهیم پایگاه داده را به زبان ساده بیان کنیم، میتوانیم بگوییم که پایگاه داده شامل ذخیره و دستهبندی اطلاعات، در جهت دسترسی و مدیریت بهترِ آنها است. یک پایگاه داده دارای مجموعهای از جدول ها است که اطلاعات را بر اساس نوع آنها، در سطرهای مختلف دستهبندی میکند. بگذارید این مفهوم را با یک مثال برای شما توضیح دهیم:
فرض کنید که شما یک فروشگاه دارید و نام و شماره تلفن هر فردی که از شما خرید میکند را مینویسید. حال میتوانید دفتر یا فایلی که اطلاعات مشتریها را در آن ذخیره میکنید، یک پایگاه داده بدانید. طبق توضیحی که از پایگاه داده ارائه شد، شما در دفترتان، نام و شماره تلفن هر فردی را در سطرهای مختص به آنها مینویسید.
پایگاه داده nosql چیست؟
یک پایگاه داده nosql در سطح بالاتر و وسیعتری از پایگاه داده sql کار میکند و بسیار گستر
برچسب: نویسنده: دانلودی تاريخ: دوشنبه 10 بهمن 1401 ساعت: 21:29
دنیای هوش مصنوعی روز به روز در حال پیشرفت است و این موضوع میتواند تا حدودی انسانها را بترساند. یکی از معروفترین تکنولوژیهای مبتنی بر هوش مصنوعی که به تازگی به نمایش گذاشته شده است، chatGPT است و اگر در فضای وب فعالیت میکنید، امکان ندارد که اسم chatGPT به گوش شما نخورده باشد. امروزه این تکنولوژی باعث نگرانی خیلی از افراد شده است و برخی نگران از دست رفتن شغلشان به واسطه این ربات هستند. در این مطلب از شرکت نرمافزاری وب نگاه، به بررسی کامل چت GPT، کاربردها و مزایا و معایب آن میپردازیم تا شما دیدی بهتر نسبت به آینده این ربات و هوش مصنوعی پیدا کنید. در ادامه با ما همراه باشید.
چت GPT چیست؟
به طور کلی chatGPT یک ربات چت (chat bot) مبتنی بر هوش مصنوعی است که توسط مجموعه openAI ساخته و عرضه شده. این ربات، توان این را دارد که به هر سوالی که از او میپرسید پاسخ دهد و هر کار مرتبط با تکنولوژی را در فضای وب انجام دهد. اگر بخواهیم به زبان دیگر مفهوم چت جی چی تی را توضیح دهیم، میتوانیم بگوییم chatGPT نوعی مدل زبانی بزرگ (large language model) است که با استفاده از مقدار زیادی داده آموزش میبیند تا بتواند به سوالات مختلفی در زمینههای متفاوت پاسخ داده و کارهای بیشتری را انجام دهد.
شاید فکر کنید چت جیپیتی یک ربات چت ساده مانند گوگل است؛ اما مسئله فراتر از این موضوعات است! چت GPT قادر است تا برنامههایی با زبانهای مختلف بنویسد، طراحی اپلیکیشن انجام دهد، مسائل پیچیده ریاضی را حل کند و تولید محتوای متنی انجام دهد! البته در حال حاضر، تمام این فعالیتها به درستی توسط این ربات انجام نمیشوند؛ اما در آیندهای نه چندان دور، میتوانیم شاهد وقوع پیشرفتهایی در این حوزه باشیم
برچسب: نویسنده: دانلودی تاريخ: دوشنبه 10 بهمن 1401 ساعت: 21:29
میتوان دو مورد از پرطرفدارترین استاندارهای طراحی API را REST و graphQL دانست. در گذشته REST محبوبترین استاندارد طراحی API بود؛ اما با ورود graphQL، چالش اصلی برنامهنویسان انتخاب یکی از این دو معماری شد. باید گفت، برای اینکه ما بتوانیم معماریهای طراحی API را انتخاب کنیم، ابتدا نیاز است تا نیازها و فعالیت خودمان را بسنجیم و سپس به بررسی مزایا و معایب آنها بپردازیم. در این مقاله از شرکت نرم افزاری وب نگاه، به بررسی مفهوم و مقایسه REST و graphQL و مزایا و معایب آنها میپردازیم. در ادامه با ما همراه باشید.API چیست؟
قبل از اینکه به مفهوم graghQL و REST بپردازیم، نیاز است تا با مفهوم API آشنا شوید. API مخفف عبارت Application Programming Interface است که به معنای رابط برنامه نویسی اپلیکیشن است.
اگر بخواهیم کاربرد API را به زبان ساده توضیح دهیم، میتوانیم بگوییم که API ها کتابخانه یا ابزارهایی هستند که به برنامه نویسان امکان نوشتن یک کد و ارتباط آن با دیگر نرمافزارها را ارائه میدهد.
برنامه نویسان میتوانند از API برای اتصال یک اپلیکیشن به سرور سایت در جهت خواندن دادهها استفاده کنند که به این تکنولوژی WEBAPI میگویند؛ یعنی دادهها همزمان در فضای وب و یک یا چند اپلیکیشن نمایش داده میشوند.
برای مثال فرض کنید که شما اپلیکیشن یک فروشگاه آنلاین را نصب میکنید و میتوانید در آن، دادههایی مانند عکس محصولات، نظرات کاربران، ویدیوهای بررسی محصولات و درگاههای بانکی را مشاهده کنید. شاید با خود فکر کنید که چگونه این حجم از اطلاعات که نیاز به فضای چند گیگی دارند، در یک اپلیکیشن 30 مگابایتی نمایش داده میشوند؟
پاسخ این است که در این روش از طراحی اپلیکیشن، این داده
برچسب: نویسنده: دانلودی تاريخ: دوشنبه 10 بهمن 1401 ساعت: 21:29
برچسب: نویسنده: دانلودی تاريخ: دوشنبه 10 بهمن 1401 ساعت: 21:29
رشتهها، یکی از عمومیترین نوعهای دادهها هستند؛ از آنها در تعریف آدرسهای اینترنتی، عبارات باقاعده و یا حتی زمانها و تاریخها استفاده میکنیم. در دات نت 7 میتوان با استفاده از ویژگی جدید StringSyntaxAttribute، به این نوعهای مختلف اندکی معنا بخشید. معرفی ویژگی جدید StringSyntax
با استفاده از ویژگی StringSyntax جدید میتوان مقدار مورد انتظار از رشتهی درخواستی را معنادار کرد. برای مثال، Visual Studio سالهاست که راهنمایی را در حین تعریف عبارات باقاعده ظاهر میکند. اما این راهنما صرفا مختص به ویژوال استودیو است و تا پیش از این راهی وجود نداشت تا عنوان کنیم که برای مثال این رشته قرار است تنها یک عبارت باقاعده باشد. اکنون در دات نت 7 با معرفی ویژگی جدید StringSyntax میتوان یک چنین intellisense ای را در سایر IDEها نیز شاهد بود.
برای نمونه مثال زیر را درنظر بگیرید: using System.Diagnostics.CodeAnalysis;
namespace CS11Tests;
public class StringSyntaxAttributeTests
{
public static void Test()
{
RegexTest("");
DateTest("");
}
private static void RegexTest([StringSyntax(StringSyntaxAttribute.Regex)] string regex)
{
}
private static void DateTest([StringSyntax(StringSyntaxAttribute.DateTimeFormat)] string dateTime)
{
}
}
در اینجا با استفاده از ویژگی StringSyntax، دقیقا مشخص کردهایم که هدف از تعریف پارامترهای رشتهای مدنظر چه چیزی بودهاست. به این ترتیب، برای مثال در Rider، در حین استفاده از این متدها، به intellisenseهای زیر خواهیم رسید:
راهنمای ظاهر شده جهت تعریف سادهتر عبارات باقاعده:
برچسب: نویسنده: دانلودی تاريخ: دوشنبه 10 بهمن 1401 ساعت: 21:29
برچسب: نویسنده: دانلودی تاريخ: دوشنبه 10 بهمن 1401 ساعت: 21:29
دات نت 7 به همراه یک Regex Source Generator توکار است که به کمک آن میتوان عبارات باقاعده را تبدیل به کدهای سیشارپ معادل آنها کرد و پیش از اجرای برنامه، آنها را کامپایل و جزئی از خروجی نهایی نمود. این روش نسبت به روش پیشین تولید کدهای معادل عبارات باقاعده در زمان اجرای برنامه، از مزایای زیر برخوردار است:
- اجرای یک عبارت باقاعده سریعتر خواهد شد. در این حالت دیگر نیازی نیست تا در حین اجرای برنامه، منتظر پردازش و تولید کدهای سیشارپ معادل آن شد.
- کدهای تولیدی پیش از کامپایل برنامه، از مزایای بهینه سازی ویژهای برخوردار میشوند که پیشتر تنها با ذکر پرچم RegexOptions.Compiled در زمان اجرا میسر میشدند.
- بعضی از سکوهای کاری مانند iOS، از تولید کد در زمان اجرای برنامه پشتیبانی نمیکنند. در این حالت یک تولید کنندهی کد سیشارپ معادل در زمان کامپایل برنامه، حداکثر کارآیی را برای اینگونه سکوهای کاری به ارمغان میآورد.
- امکان مطالعهی کدهای سیشارپ تولیدی معادل یک عبارت باقاعده، برای اولین بار پیش از اجرای برنامه میسر شدهاست.
- کدهای تولیدی معادل، قابلیت دیباگ دارند.
- میتوان با مطالعهی این کدها، نکات جدیدی را فرا گرفت! چه عبارت باقاعدهای را میتوان به Regex source generators تبدیل کرد؟
برای استفاده از این تولید کنندهی کدهای معادل عبارات باقاعده، باید از NET 7. و C# 11 استفاده کرد. همچنین تمام پارامترهای Regex تعریف شده نیز باید ثابت باشند. برای نمونه در دو مثال زیر، در اولی، patte ثابت است و در دومی هم patte و هم سایر تنظیمات ذکر شده؛ بنابراین قابلیت تبدیل به روش استفاده از تولید کنندههای کد را دارند: if(new Regex("[a-z]+").IsMatch("abc")){}
if(Reg
برچسب: نویسنده: دانلودی تاريخ: دوشنبه 10 بهمن 1401 ساعت: 21:29
برچسب: نویسنده: دانلودی تاريخ: دوشنبه 10 بهمن 1401 ساعت: 21:29
برچسب: نویسنده: دانلودی تاريخ: دوشنبه 10 بهمن 1401 ساعت: 21:29
LINQ یا همان Language-Integrated Query، یک زبان سادهی کوئری نوشتن یکپارچهی با دات نت است. به کمک آن میتوان اعمال پیچیدهای را بر روی اشیاء، به زبانی ساده بیان کرد و امروزه تقریبا توسط تمام توسعه دهندگان دات نت مورد استفاده قرار میگیرد. اما ... این سادگی، بهایی را نیز به همراه دارد: کمتر بودن سرعت اجرا و همچنین افزایش مصرف حافظه. با توجه به گستردگی استفادهی از LINQ، اگر بهبودی در این زمینه حاصل شود، بر روی کارآیی تمام برنامههای دات نتی تاثیر خواهد گذاشت و این امر در دات نت 7 محقق شدهاست. کارآیی متدهای LINQ to Objects در دات نت 7 (مانند متدهای Enumerable.Max, Enumerable.Min, Enumerable.Average, Enumerable.Sum) به شدت افزایش یافته و این افزایش گاهی حتی بیشتر از 10 برابر نسبت به نگارشهای قبلی دات نت است؛ اما چگونه به چنین کارآیی رسیدهاند؟
تدارک یک آزمایش برای بررسی میزان افزایش کارآیی متدهای LINQ در دات نت 7
در ادامه یک آزمایش سادهی بررسی کارآیی متدهای Enumerable.Max, Enumerable.Min, Enumerable.Average, Enumerable.Sum را با استفاده از کتابخانهی معروف BenchmarkDotNet مشاهده میکنید: using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Ruing;
using System.Collections.Generic;
using System.Linq;
[MemoryDiagnoser(displayGenColumns: false)]
public partial class Program
{
static void Main(string[] args) =>
BenchmarkSwitcher.FromAssembly(typeof(Program).Assembly).Run(args);
[Params (10, 10000)]
public int Size { get; set; }
private IEnumerable<int> items;
[GlobalSetup]
public void Setup()
{
items = Enumerable.Range(1, Size).To
برچسب: نویسنده: دانلودی تاريخ: دوشنبه 10 بهمن 1401 ساعت: 21:29
استفادهی از Reflection در زیر ساختهای دات نت و ASP.NET Core، بسیار گستردهاست؛ به همین جهت هرگونه بهبود کارآیی در این زمینه، نه فقط بر روی خود فریمورک، بلکه تمام برنامههایی که از آن استفاده میکنند هم تاثیر گذار است. از این لحاظ دات نت 7 شاهد تغییرات گستردهای است تا حدی که کارآیی برنامههای مبتنی بر دات نت 7 ای که از Reflection استفاده میکنند، نسبت به نگارشهای قبلی دات نت، حداقل 2 برابر شدهاست و این برنامهها تنها کاری را که باید انجام دهند، صرفا تغییر target framework مورد استفادهی در آنها به نگارش جدید است. در این مطلب نحوهی رسیدن به این کارآیی بالاتر را بررسی خواهیم کرد.
تدارک یک آزمایش برای بررسی میزان افزایش کارآیی Reflection در دات نت 7
یک برنامهی کنسول جدید را ایجاد کرده و سپس کلاس Person را به صورت زیر به آن اضافه میکنیم: namespace NET7Reflection;
public class Person
{
private int _age;
inteal Person(int age) => _age = age;
private int GetAge() => _age;
private void SetAge(int age) => _age = age;
}
همانطور که مشاهده میکنید، سازندهی این کلاس، inteal است و همچنین دو متد private هم دارد که اگر بخواهیم از آن در جای دیگری استفاده کنیم، یکی از روشهای متداول جهت دسترسی به این امکانات خصوصی، استفاده از Reflection است.
به همین جهت ابتدا کتابخانهی BenchmarkDotNet را با TargetFramework دات نت 7 به صورت زیر به پروژه اضافه میکنیم: <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net7.0</TargetFramework>
<Implicit
برچسب: نویسنده: دانلودی تاريخ: دوشنبه 10 بهمن 1401 ساعت: 21:29
بالاخره تفاوت کارآیی بین حلقههای for و foreach در دات نت 7 برطرف شدهاست که این مورد نیز یکی دیگر از دلایل بهبود کارآیی LINQ در دات نت 7 است. در این مطلب به همراه آزمایشی، این مورد را بررسی خواهیم کرد. تدارک یک آزمایش برای بررسی کارآیی حلقههای for و foreach در دات نت 7
یک برنامهی کنسول جدید را ایجاد کرده و سپس کتابخانهی BenchmarkDotNet را با TargetFramework دات نت 7 به صورت زیر به پروژه اضافه میکنیم: <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="BenchmarkDotNet" Version="0.13.4" />
</ItemGroup>
</Project>
در ادامه به این پروژه، کلاس زیر را اضافه میکنیم: using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Jobs;
namespace NET7Loops;
[SimpleJob(RuntimeMoniker.Net60)]
[SimpleJob(RuntimeMoniker.Net70)]
[MemoryDiagnoser(false)]
public class Benchmarks
{
private int[] ItemsArray;
private List<int> ItemsList;
[GlobalSetup]
public void Setup()
{
var random = new Random(420);
var randomItems = Enumerable.Range(0, 1000).Select(_ => random.Next());
ItemsArray = randomItems.ToArray();
ItemsList = randomItems.ToList();
}
[Benchmark]
public void For_Array()
{
for (var i =
برچسب: نویسنده: دانلودی تاريخ: دوشنبه 10 بهمن 1401 ساعت: 21:29
برچسب: نویسنده: دانلودی تاريخ: دوشنبه 10 بهمن 1401 ساعت: 21:29